/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package util.file.xml;


import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

/**
 *
 * @author Rdelacruz
 * @version Es anterior a la version de EnahoAndroidUtil
 */
public class RegistroXml {    
    protected TablaXml tabla;
    
    protected Map<String,CampoXml> valores;//son tuplas campo-valor

    public RegistroXml() {
        valores = new HashMap<String,CampoXml>();
    }
    
    public Set<Map.Entry<String, CampoXml>> getValores() {
        return valores.entrySet();
    }
    
        
    protected final void parsear(Node nRegistro) {
        NodeList hsRegistro = nRegistro.getChildNodes();                       
        int nhsRegistro = hsRegistro.getLength();//numero de hijos del nodo registro
        
        for (int k = 0; k < nhsRegistro ; k++) {
            Node hRegistro = hsRegistro.item(k);

            //descartando los nodos de tipo texto                                
            if(hRegistro.getNodeType()==Node.TEXT_NODE)
                continue;

            Node nValor = hRegistro;           
            Node hValor = nValor.getChildNodes().item(0);

            String campo = nValor.getNodeName();            
            //System.out.println("  "+campo+"="+hValor);
            String valor = hValor==null? null : hValor.getNodeValue();
                        
            addValor(campo, valor);
        }
    }
    
    public void addValor(String campo, String valor) {
        /*
        //Cambiando ñ por nh
        String campo1 = campo.toLowerCase();
        if(campo1.contains("ñ"))
            campo = campo1.replace("ñ", "nh");
        */
        
        CampoXml campoXml = new CampoXml();
        campoXml.setCampo(campo);
        campoXml.setValor(valor);
        valores.put(campo.toUpperCase(), campoXml);
    }
    
    public String getValorString(String campo) {   
        CampoXml campoXml = valores.get(campo.toUpperCase());
        return campoXml!=null ? campoXml.getValor() : null;
    }
    
    /*
    public String scriptInsert() {
        StringBuilder sb = new StringBuilder();
        sb.append("INSERT INTO ");
        sb.append(tabla.getNombre());
        sb.append("(");
        
        for (Map.Entry<String, CampoXml> e : valores.entrySet()) {
            //System.out.println(entry.getKey() + "/" + entry.getValue());
            sb.append(e.getKey());
            sb.append(",");
        }
        int n = sb.length();        
        sb.delete(n-1, n);//borrando la coma
        
        sb.append(") VALUES (");
        for (Map.Entry<String, CampoXml> e : valores.entrySet()) {
            //System.out.println(entry.getKey() + "/" + entry.getValue());
            //EXPORTANDO TODO COMO TIPO TEXTO
            sb.append("'");
            sb.append(e.getValue());
            sb.append("',");
        }
        n = sb.length();
        sb.delete(n-1, n);//borrando la coma
        sb.append("); ");
        
        return sb.toString();
    }
    */
    
    
    

    public TablaXml getTabla() {
        return tabla;
    }

  
  
}
